import pandas as pd
# 读取 CSV 文件
file_path = 'data.csv'
data = pd.read_csv(file_path)
# 显示前几行
# print(data)  # 或者直接展示数据框
# 2.删除重复行
data_cleaned = data.drop_duplicates()
# print(data_cleaned)

# 3.读取 CSV 文件，将 "na" 和 "--" 识别为空数据
data = pd.read_csv(file_path, na_values=["na", "--"])
# 展示数据
#print(data)
# 检查空值
#print(data.isnull().sum())  # 每列的空值计数
# 填充空值，例如使用 0 或均值
#data_filled = data.fillna(0)  # 将所有空值替换为 0
#print(data_filled)

# 4.检查数据框的初始状态
#print("初始数据：")
#print(data.head())
# 检查 'SQ_FT' 列的空值数量
#print("\n'SQ_FT' 列空值数量：", data['SQ_FT'].isnull().sum())
# 计算 'SQ_FT' 列的平均值（忽略空值）
mean_value = data['SQ_FT'].mean(skipna=True)
# 打印平均值
#print("\n'SQ_FT' 列的平均值：", mean_value)
# 用平均值替换 'SQ_FT' 列的空值
data['SQ_FT'] = data['SQ_FT'].fillna(mean_value)
# 检查替换后的数据
#print("\n替换空值后的数据：")
#print(data.head())
# 再次检查 'SQ_FT' 列的空值数量，确保没有空值
#print("\n'SQ_FT' 列空值数量（替换后）：", data['SQ_FT'].isnull().sum())

# 5.检查数据框的初始状态
#print("初始数据：")
#print(data.head())
# 检查 'ST_NUM' 列的空值数量
#print("\n'ST_NUM' 列空值数量：", data['ST_NUM'].isnull().sum())
# 计算 'ST_NUM' 列的众数（忽略空值）
mode_value = data['ST_NUM'].mode()[0]  # 获取众数的第一个值
# 打印众数
#print("\n'ST_NUM' 列的众数：", mode_value)
# 用众数替换 'ST_NUM' 列的空值
data['ST_NUM'] = data['ST_NUM'].fillna(mode_value)
# 检查替换后的数据
#print("\n替换空值后的数据：")
#print(data.head())
# 再次检查 'ST_NUM' 列的空值数量，确保没有空值
#print("\n'ST_NUM' 列空值数量（替换后）：", data['ST_NUM'].isnull().sum())

# 6.检查数据框的初始状态
print("初始数据：")
print(data.head())
# 检查数据框中空值的行数
print("\n空值行数量：", data.isnull().any(axis=1).sum())
# 删除具有空值的行
data_cleaned = data.dropna()
# 检查删除后的数据框
print("\n删除空值后的数据：")
print(data_cleaned.head())
# 检查是否还有空值
print("\n是否还有空值：")
print(data_cleaned.isnull().sum())
# 检查数据框的行数变化
print("\n删除空值后的数据行数：", len(data_cleaned))
print("原始数据行数：", len(data))